package com.leetcode.August;

/**
 * @Description: 26. 删除有序数组中的重复项
 * 假设初始时 i = 0，数组 nums 的内容为 [1, 1, 2, 2, 3, 4, 4, 5]。
 * <p>
 * 第一轮循环，n = 1，因为 nums[i] 也是 1，所以不执行赋值操作，此时 i 保持为 0。
 * 第二轮循环，n = 1，因为 nums[i] 也是 1，所以不执行赋值操作，此时 i 保持为 0。
 * 第三轮循环，n = 2，因为 nums[i] 是 1，所以执行 nums[++i] = n;。先将 i 自增为 1，然后将 2 赋值给 nums[1]，数组变为 [1, 2, 2, 2, 3, 4, 4, 5]。
 * 第四轮循环，n = 2，因为 nums[i] 也是 2，所以不执行赋值操作，此时 i 保持为 1。
 * 第五轮循环，n = 3，因为 nums[i] 是 2，所以执行 nums[++i] = n;。先将 i 自增为 2，然后将 3 赋值给 nums[2]，数组变为 [1, 2, 3, 2, 3, 4, 4, 5]。
 * @Author: Mr.Fxy
 * @CreateTime: 2024-08-15 10:45
 */
public class LC26删除有序数组中的重复项 {
    public int removeDuplicates(int[] nums) {
        int i = 0;
        for (int num : nums) {
            if (nums[i] != num) {
                nums[++i] = num;
            }
        }
        return ++i;
    }
}
